package tree;

import com.sun.source.tree.Tree;

import java.util.LinkedList;
import java.util.Queue;
import java.util.regex.Pattern;

public class kuohao {
    private int index;
    private String str;


    public kuohao(String str) {
        this.str = str;
        this.index=0;
    }

   public static class TreeNode{
        private char data;
        private TreeNode left;
        private TreeNode right;

        public TreeNode(char data) {
            this.data = data;
        }

        public TreeNode(char data, TreeNode left, TreeNode right) {
            this.data = data;
            this.left = left;
            this.right = right;
        }
    }


    public static void main(String[] args) {
        String input = "a(,e)";
        kuohao t= new kuohao(input);
        TreeNode root = t.getTree();
        String res= t.levelOrder(root);
        System.out.println(res);
    }
    public TreeNode getTree() {
        if (index >= str.length()) return null;

        char cur = str.charAt(index++);
        if (!Character.isLetter(cur)) {
            return null;
        }

        TreeNode node = new TreeNode(cur);

        // 处理孩子
        if (index < str.length() && str.charAt(index) == '(') {
            index++; // 跳过 '('

            if (str.charAt(index) != ',') {
                node.left = getTree();
            }

            // 处理右孩子
            if (index < str.length() && str.charAt(index) == ',') {
                index++; // 跳过 ','
                if (index < str.length() && str.charAt(index) != ')') {
                    node.right = getTree();
                }
            }

            // 跳过 ')'
            if (index < str.length() && str.charAt(index) == ')') {
                index++;
            }
        }

        return node;
    }

    public String levelOrder(TreeNode node){
        Queue<TreeNode> queue=new LinkedList<>();
        queue.offer(node);
        StringBuilder sb=new StringBuilder();
        while(!queue.isEmpty()){
            //队列不为空
            TreeNode root = queue.poll();
            sb.append(root.data);
            sb.append(" ");
            if(root.left!=null)queue.offer(root.left);
            if(root.right!=null)queue.offer(root.right);
        }
        return String.valueOf(sb);
    }
}



//    public TreeNode getTree() {
//        if (index >= str.length()) return null;
//        // 如果不是字母，说明该子树为空,
//        char cur = str.charAt(index++);
//        if (!( (cur >= 'a' && cur <= 'z') || (cur >= 'A' && cur <= 'Z') )) {
//            return null;
//        }
//        // 获取当前字符作为节点数据
//        TreeNode node = new TreeNode(cur);
//        // 处理左子树
//        if (index < str.length() && str.charAt(index) == '(') {
//            index++; // 跳过左括号到达左儿子
//            node.left = getTree();//处理左子树
//
//            // 处理逗号和右子树
//            if (index < str.length() && str.charAt(index) == ',') {
//                index++;
//                node.right = getTree();
//            }
//            index++;//跳过右括号
//        }
//        return node;
//    }
